package br.com.locanet.view.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

import javax.faces.bean.ManagedBean;

import org.apache.tomcat.util.http.fileupload.DiskFileUpload;
import org.apache.tomcat.util.http.fileupload.FileItem;

import br.com.locanet.bean.impl.Imagem;
import br.com.locanet.exception.InvalidAttributeException;
import br.com.locanet.service.impl.ImagemService;
import br.com.locanet.view.AbstractManagedBean;

@ManagedBean(name="imagemBean")
public class ImagemBean extends AbstractManagedBean<Imagem, ImagemService>{
		//AbstractSecurityAction<Imagem, ImagemDAO, ImagemService> {

	public String insert() throws Exception {
		Imagem imagem = new Imagem();
		
		DiskFileUpload fileUpload = new DiskFileUpload();
		List<FileItem> itens = fileUpload.parseRequest(getRequest());
		
		for (FileItem item : itens){
			if (item.getFieldName().equals("entity.titulo")) getEntity().setTitulo(item.getName());
//			if (item.getFieldName().equals("imagem")) getEntity().setUrl(getEntityService().saveImage(item));
		}
		
		String result=super.insert();
		
	//	select();
		return result;
	}

//	@Override
//	@MethodAction(success="tiles.imagem.lista",fail="tiles.imagem.lista")
//	public void select() throws Exception {
	//	super.select();
//	}
	
	public void get_update() throws Exception{
		if (getEntity().getId()==null) throw new InvalidAttributeException("idImagemNaoInformado");
		
		Imagem imagem = getEntityService().selectById(getEntity());
		
		getRequest().setAttribute("imagem", imagem);
	}
	
	public void popup() throws Exception{
	//	select();
	}
	
	private byte[] generateByteArray(File file){
		byte[] buffer = null;		
		try {
			FileInputStream fis = new FileInputStream(file);
			buffer = new byte[fis.available()];
			int i = 0;
			int ch = 0;
			
			while ((ch = fis.read()) != -1) {
				buffer[i] = (byte) ch;
				i++;
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return buffer;
	}

}
